package com.shanks.home.util.model;

import java.util.HashMap;

/**
 * 监听数据变化
 * @author Shanks
 * @time 2014.05.30
 */
public class DataProvider {
	
	private static DataProvider instance;
	private HashMap<String, DataProviderData> hashMap = new HashMap<String, DataProviderData>();
	private DataProviderData dataProviderData;
	
	public static DataProvider getInstance() {
		if (instance == null)
			instance = new DataProvider();
		return instance;
	}
	
	/**
	 * 提供可监听的数据
	 */
	public synchronized void setData(String key, Integer value) {
		dataProviderData = hashMap.get(key);
		if (dataProviderData != null) {
			// 数据监听中心已经有了该数据
			// 数据变了，改变数据并通知
			if (dataProviderData.data != value) {
				dataProviderData.data = value;
				if (dataProviderData.dataObserver != null) {
					dataProviderData.dataObserver.onChange(dataProviderData.data);
				}
			}
			// 数据没变，什么都不用做			
		} else {
			// 数据监听中心还没有该数据 
			dataProviderData = new DataProviderData();
			dataProviderData.data = value;
			hashMap.put(key, dataProviderData);
		}
		
	}
	
	/**
	 * 注册监听
	 */
	public synchronized void registerDataObserver(String key, DataObserver oo) {
		dataProviderData = hashMap.get(key);
		if (dataProviderData != null) {
			// 数据监听中心已经有了该数据
			dataProviderData.dataObserver = oo;
		} else {
			// 数据监听中心还没有该数据 
			dataProviderData = new DataProviderData();
			dataProviderData.dataObserver = oo;
			hashMap.put(key, dataProviderData);
		}
	}
}